1. Field of the Invention
This invention relates generally to synchronization/back-up server systems, and more, specifically, to a method for peer-to-peer synchronization.
2. Description of the Background Art
Synchronization systems enable users to synchronize data across a plurality of devices. Typical TCP/IP-based synchronization solutions run in one of two modes: client server, or peer-to-peer. Examples of client-server synchronization solutions include MICROSOFT EXCHANGE (email/PIM) and SHARPCAST SUGARSYNC. Examples of peer-to-peer solutions include Microsoft's WINDOWS LIVE FOLDERSHARE, and utilities such as Rsync.
Client-server solutions offer several benefits, such as providing data synchronization between devices even if the devices cannot reach each other (e.g., because they are behind separate firewalls, or because one is not turned on or connected to a network). Additionally, they can offer more robust backup capabilities, as data is synced to a central server, often in a highly available datacenter. One of the disadvantages of a client-server solution is that synchronizing large amounts of data via the Internet can be slow and expensive compared to transfers on a local area network or intranet.
Peer-to-peer solutions offer much faster data transfers when peers are on the same local area network. Typical data transfer speeds on local area networks can reach one gigabit per second, whereas typical connections over the Internet are limited to several megabits per second. By transferring data between peers over a local network, instead of between a client and a central server over the Internet, client devices can synchronize much more quickly. One of the disadvantages of peer-to-peer solutions is that devices can only be synchronized when they are both running and able to communication via the same local network or intranet.
As indicated above, each method has its advantages and disadvantages. It would be desirable to have a synchronization system that was able to take advantage of the best of both peer-to-peer synchronization and client-server synchronization.